<?php


class Tache extends CI_Model
{
	const TABLE_TACHE							= 'tache';
	const ID_TACHE								= 'IDTache';
	const LIBELLE_TACHE 						= 'LibelleTache';
	const ECHEANCE_TACHE 						= 'Echeance';
	const ID_ETUDIANT_TACHE						= 'ETUDIANTID';
	const ID_ACTION_TACHE						= 'IDAction';
	const AUTEUR_TACHE							= 'AuteurTache';
	
		/* Attributs */
	/**
	 * @var int
	 */
	private $id;
	/**
	 * @var string
	 */
	private $libelle;
	/**
	 * @var date
	 */
	private $echeance;
	/**
	 * @var int
	 */
	private $idEtudiant;
	/**
	 * @var int
	 */
	private $idAction;
	/**
	 * @var int
	 */
	private $auteurTache;

		/* Constructeurs & Destructeurs */
	public function __construct()
	{
		parent::__construct();
	}

	/* Méthodes BDD */
	
	/**
	 * Fonction permettant de récupérer une tache en fonction de l'identifiant de l'action
	 * @param integer $id identifiant de l'action
	 * @return Tache une tache
	 */
	public static function findByIdAction($idAction)
	{
		$CI = get_instance();
		 
		$CI->load->database('db_adc', true);
		 
		$resultat = $CI->db	->select(Tache::ID_TACHE.','.Tache::LIBELLE_TACHE.','.Tache::ECHEANCE_TACHE.','.Tache::ID_ETUDIANT_TACHE.','.Tache::ID_ACTION_TACHE.','.Tache::AUTEUR_TACHE)
							->from(Tache::TABLE_TACHE)
							->where(Tache::ID_ACTION_TACHE, $idAction)
							->get()
							->result_array();
		 
		if(!empty($resultat))
		{
			foreach($resultat as $result)
			{
				$tache = new Tache();
				$tache->setId($result[Tache::ID_TACHE]);
				$tache->setLibelle($result[Tache::LIBELLE_TACHE]);
				$tache->setEcheance($result[Tache::ECHEANCE_TACHE]);
				$tache->setIdEtudiant($result[Tache::ID_ETUDIANT_TACHE]);
				$tache->setIdAction($result[Tache::ID_ACTION_TACHE]);
				$tache->setAuteurTache($result[Tache::AUTEUR_TACHE]);
				$t[]=$tache;
			}
				
			return $t;
		}
		return false;
	}
	
	/**
	 * Fonction permettant d'ajouter une tache
	 * @return true ou false
	 */
	public function addTache()
	{
		$CI = get_instance();
	
		$CI->load->database('db_adc', true);

		$CI->db->set(self::LIBELLE_TACHE, $this->getLibelle());		 
		$CI->db->set(self::ECHEANCE_TACHE, $this->getEcheance());
		$CI->db->set(self::ID_ETUDIANT_TACHE, $this->getIdEtudiant());
		$CI->db->set(self::ID_ACTION_TACHE, $this->getIdAction());
		$CI->db->set(self::AUTEUR_TACHE, $this->getAuteurTache());
		 
	
		return $CI->db->insert(self::TABLE_TACHE);
	}

	/**
	 * Fonction permettant de modifier une tache
	 * @return true ou false
	 */
	public static function modifyTache()
	{
		$CI = get_instance();
	
		$CI->load->database('db_adc', true);
			
		$CI->db->set(self::LIBELLE_TACHE, $this->getLibelle());
		$CI->db->set(self::ECHEANCE_TACHE, $this->getEcheance());
		$CI->db->set(self::ID_ETUDIANT_TACHE, $this->getIdEtudiant());
		$CI->db->set(self::ID_ACTION_TACHE, $this->getIdAction());
		$CI->db->set(self::AUTEUR_TACHE, $this->getAuteurTache());
		
		$CI->db->where(self::ID_TACHE, (int)$this->getId());
	
		return $CI->db->update(self::TABLE_TACHE);
	}
	
	/**
	 * Fonction permettant de supprimer une tache
	 * @return true ou false
	 */
	public static function delTache($idAction)
	{
		$CI = get_instance();
	
		$CI->load->database('db_adc', true);
		 
		$resultat = $CI->db->where(Tache::ID_ACTION_TACHE, $idAction)
							->delete(Tache::TABLE_TACHE);
	
		return $resultat;
	}
	
	/* Getteurs & Setteurs */
	/**
	 * get Id
	 * 
	 * @return int $_id
	 */
	public function getId()
	{
		return $this->id;
	}
	
	/* Getteurs & Setteurs */
	/**
	 * set Id
	 * 
	 * @param int $id
	 */
	public function setId($id)
	{
		$this->id=$id;
	}

	/**
	 * get Libelle
	 * 
	 * @return string $libelle
	 */
	public function getLibelle()
	{
		return $this->libelle;
	}

	/**
	 * set Libelle
	 * 
	 * @param string $libelle
	 */
	public function setLibelle($libelle)
	{
		$this->libelle=$libelle;
	}

	/**
	 * get Echeance
	 * 
	 * @return date
	 */
	public function getEcheance()
	{
		return $this->echeance;
	}

	/**
	 * set Echeance
	 * 
	 * @param date
	 */
	public function setEcheance($echeance)
	{
		$this->echeance=$echeance;
	}
	
	/**
	 * get Etudiant
	 * 
	 * @return Etudiants
	 */
	public function getEtudiant($idAction)
	{
		$CI = get_instance();
    	$CI->load->database('db_adc', true);
    	$idEtudiant = $CI->db	->select(Tache::ID_ETUDIANT_TACHE)
						    	->from(Tache::TABLE_TACHE)
						    	->where(Tache::ID_ACTION_TACHE, $idAction)
						    	->limit(1)
						    	->get()
						    	->result_array();
    	if(!empty($idEtudiant))
    	{
    		$CI->load->database('db_etudiant', true);
			$etudiant = Etudiants::findById($idEtudiant[0][Tache::ID_ETUDIANT_TACHE]);
			return $etudiant;
    	}
    	else
    		return false;
	}
	
	/**
	 * get Etudiant
	 *
	 * @return Etudiants
	 */
	public function getEtudiantTache($idEtu)
	{
		$CI = get_instance();
		$CI->load->database('db_etudiant', true);
		$etudiant = Etudiants::findById($idEtu);
		
		if(!empty($etudiant))
		{
			return $etudiant;
		}
		else
			return false;
	}

	/**
	 * get IdEtudiant
	 * 
	 * @return int
	 */
	public function getIdEtudiant()
	{
		return $this->idEtudiant;
	}

	/**
	 * set IdEtudiant
	 * 
	 * @param int
	 */
	public function setIdEtudiant($idEtudiant)
	{
		$this->idEtudiant=$idEtudiant;
	}

	/**
	 *get IdAction
	 * 
	 * @return int
	 */
	public function getIdAction()
	{
		return $this->idAction;
	}

	/**
	 * set IdAction
	 * 
	 * @param int
	 */
	public function setIdAction($adc)
	{
		$this->idAction=$adc;
	}
	
	/**
	 * get AuteurTache
	 * 
	 * @return int
	 */
	public function getAuteurTache()
	{
		return $this->auteurTache;
	}
	
	/**
	 * Set AuteurTache
	 * 
	 * @param int
	 */
	public function setAuteurTache($auteur)
	{
		$this->auteurTache=$auteur;
	}

}
?>